iT邦幫忙

2022 iThome 鐵人賽

DAY 27
2
Modern Web

今天我想來在 Angular 應用程式上加上測試保護系列 第 27

Day 27 - 自動化測試 - 利用 Jenkins Multibranch Pipeline 執行測試

  • 分享至 

  • xImage
  •  

前言

這一系列前兩部份分別說明了單元測試與端對端測試,當我們撰寫完這些測試程式後,就可以利用 Jenkins 或 GitHub Actions 等 CI/CD 工具,來幫我們在整合或發佈之前進行測試。這一篇就先利用 Jenkins Multibranch Pipeline 來執行測試程式。

什麼是 Jenkins Multibranch Pipeline

Jenkins 是一套古老的持續整合工具,而 Multibranch Pipeline 是 Jenkins 讓我們可以針對不同的分支去執行自動化作業的方案之一。在 Multibranch Pipeline 作業中 Jenkins 預設會去專案目錄內搜尋 JenkinsFile 檔案,並依此檔案的內容執行指定的自動化作業。

stages {
  stage ('Stage 1') {
    when {
      branch 'master'
    }

    steps {
      ...
    }
  }

  stage ('Stage 2') {
    steps {
      ...
    }
  }
}

JenkinsFile 檔案是利用 Groovy 語法所撰寫,如上面程式,我們可以在此檔案中,去定義每一站的自動化步驟,或是指定只在特定分支中執行特定作業。

利用 Jenkins Multibranch Pipeline 執行自動化測試

因此,我們可以在範例專案中建立 JenkinsFile 檔案,並在此檔案中指定依續執行:

  • 安裝 NPM 套件

  • 執行單元測試作業

  • 執行端對端測試作業

由於在範例專案的 package.json 已經建立了 Terminal 終端機使用的指令,因此可以在 JenkinsFile 中使用 npm run 命令來執行這些指令。

stages {
  stage ('Package Restore') {
    steps {
      bat 'npm install'
    }
  }

  stage ('Run Unit Testing') {
    steps {
      bat 'npm run test:headless'
    }
  }

  stage ('Run E2E Testing') {
    steps {
      bat 'npm run e2e:run'
    }
  }
}

順帶一提,若要在 Jenkins 專案版上顯示單元測試圖表,可以安裝 karma-junit-reporter 套件,並修改 test:headless 命令輸出的報表:

"test:headless": "ng test --watch=false --browsers=ChromeHeadless --code-coverage --no-progress --reporters spec,junit",

接下來

這一篇利用 Jenkins Multibranch Pipeline 執行自動化作業,接下來會說明如何利用 GitHub Action 執行自動化作業。


上一篇
Day 26 - 端對端測試 - 利用 Cucumber 撰寫登入作業測試規格
下一篇
Day 28 - 自動化測試 - 利用 GitHub Actions 執行測試
系列文
今天我想來在 Angular 應用程式上加上測試保護30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言